package com.ruoyi.system.wnjk.service.impl;

import com.alibaba.fastjson2.JSON;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.utils.http.TripartiteLogisticsHttpUtils;
import com.ruoyi.system.wnjk.config.TripartitleLogisticsConfig;
import com.ruoyi.system.wnjk.domain.po.TripartiteLogistics;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

@Component
public class TripartitleLogisticsService {

    @Autowired
    private TripartitleLogisticsConfig tripartitleLogisticsConfig;

    public TripartiteLogistics getTripartiteLogistics(String expressNo,String mobile){
        String host = tripartitleLogisticsConfig.getHost();
        String path = tripartitleLogisticsConfig.getPath();
        String method = "POST";
        String appcode = tripartitleLogisticsConfig.getAppcode();
        Map<String, String> headers = new HashMap<String, String>();
        //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
        headers.put("Authorization", "APPCODE " + appcode);
        //根据API的要求，定义相对应的Content-Type
        headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
        Map<String, String> querys = new HashMap<String, String>();
        Map<String, String> bodys = new HashMap<String, String>();
        bodys.put("expressNo", expressNo);
        bodys.put("mobile", mobile);
        HttpResponse response = null;
        try {
            response = TripartiteLogisticsHttpUtils.doPost(host, path, method, headers, querys, bodys);
            HttpEntity entity = response.getEntity();
            String entityStr= null;
            TripartiteLogistics tripartiteLogistics = null;
            if (entity!=null){
                entityStr = EntityUtils.toString(entity);
                ObjectMapper objectMapper = new ObjectMapper();
                tripartiteLogistics = objectMapper.readValue(entityStr, TripartiteLogistics.class);
//                System.out.println(tripartiteLogistics);
            }
            return tripartiteLogistics;
        } catch (Exception e) {
            e.printStackTrace();
            return new TripartiteLogistics("暂时无法查询，请联系管理员",false,500L,null);
        }
    }

    public static void main(String[] args) {
//        String host = "https://kzexpress.market.alicloudapi.com";
//        String path = "/api-mall/api/express/query";
//        String method = "POST";
//        String appcode = "你自己的AppCode";
//        Map<String, String> headers = new HashMap<String, String>();
//        //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
//        headers.put("Authorization", "APPCODE " + appcode);
//        //根据API的要求，定义相对应的Content-Type
//        headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
//        Map<String, String> querys = new HashMap<String, String>();
//        Map<String, String> bodys = new HashMap<String, String>();
//        bodys.put("expressNo", "expressNo");
//        bodys.put("mobile", "mobile");
//
//
//        try {
//            /**
//             * 重要提示如下:
//             * HttpUtils请从
//             * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java
//             * 下载
//             *
//             * 相应的依赖请参照
//             * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml
//             */
//            HttpResponse response = TripartiteLogisticsHttpUtils.doPost(host, path, method, headers, querys, bodys);
//            System.out.println(response.toString());
//            //获取response的body
//            //System.out.println(EntityUtils.toString(response.getEntity()));
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
    }
}
